View Javadoc

1   /**
2    * Copyright 2008 WebPhotos
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package net.sf.webphotos.action;
17  
18  import java.awt.event.ActionEvent;
19  import java.io.File;
20  import javax.swing.AbstractAction;
21  import javax.swing.JComboBox;
22  import javax.swing.JFileChooser;
23  import javax.swing.JTable;
24  import net.sf.webphotos.Album;
25  import net.sf.webphotos.gui.PainelWebFotos;
26  import net.sf.webphotos.gui.util.ImageFilter;
27  import net.sf.webphotos.gui.util.TableModelFoto;
28  import net.sf.webphotos.gui.util.TableSorter;
29  import net.sf.webphotos.util.Util;
30  import org.apache.commons.configuration.Configuration;
31  
32  /**
33   * Adiciona novas fotos. Mantém variáveis do diretório, tabela, largura da
34   * coluna, título da caixa de diálogo e lista de créditos.
35   */
36  public class AcaoAdicionarFoto extends AbstractAction {
37  
38      private static final long serialVersionUID = 8331561928830049243L;
39      private static File diretorioInicial;
40      private JFileChooser fileChooser;
41      private JTable tbFotos;
42      private String larguraColunasFotos;
43      private String titulo;
44      private JComboBox lstCreditosTabelaFotos;
45  
46      /**
47       * Construtor da classe. Recebe 3 parâmetros. A tabela de fotos, um combobox
48       * e um título para a caixa de diálogo. Inicia um objeto de
49       * {@link net.sf.webphotos.util.Config Config} para receber os dados do
50       * Folder. Seta os valores do diretório inicial, tabela de fotos, creditos,
51       * largura da coluna e título.
52       *
53       * @param tabela Tabela das fotos.
54       * @param combo Lista.
55       * @param tituloDialogo Título da caixa de diálogo.
56       */
57      public AcaoAdicionarFoto(JTable tabela, JComboBox combo, String tituloDialogo) {
58          Configuration c = Util.getConfig();
59          diretorioInicial = Util.getFolder("diretorioAdicionarFotos");
60          tbFotos = tabela;
61          lstCreditosTabelaFotos = combo;
62          larguraColunasFotos = c.getString("colunas2");
63          titulo = tituloDialogo;
64      }
65  
66      /**
67       * Método responsável pela ação de inserção das fotos. Inicia um objeto
68       * JFileChooser para a escolha do arquivo e faz a configuração. Testa se o
69       * diretório inicial é válido e depois faz a implantação da foto. Atualiza a
70       * tabela, ajusta as colunas, aciona o flag de
71       * {@link net.sf.webphotos.gui.PainelWebFotos#alteracaoDetectada() alteracaoDetectada}()
72       * e armazena o último diretório lido.
73       *
74       * @param e Evento da ação de adição de foto.
75       */
76      @Override
77      public void actionPerformed(ActionEvent e) {
78          fileChooser = new JFileChooser();
79          fileChooser.setAcceptAllFileFilterUsed(false);
80          fileChooser.setFileFilter(new ImageFilter());
81          fileChooser.setDialogTitle(titulo);
82          fileChooser.setApproveButtonText("Ok");
83          fileChooser.setApproveButtonToolTipText("Adiciona as fotos selecionadas ao álbum");
84          fileChooser.setMultiSelectionEnabled(true);
85  
86          if (diretorioInicial != null && diretorioInicial.isDirectory()) {
87              fileChooser.setCurrentDirectory(diretorioInicial);
88          }
89  
90          int retornoFc = fileChooser.showOpenDialog(null);
91  
92          if (retornoFc == JFileChooser.APPROVE_OPTION && fileChooser.getSelectedFiles().length > 0) {
93              Album.getAlbum().adicionarFotos(fileChooser.getSelectedFiles());
94  
95              /**
96               * aqui o codigo que atualiza a tabela
97               */
98              TableModelFoto.getModel().update();
99              TableModelFoto.getModel().fireTableDataChanged();
100             tbFotos.setModel(new TableSorter(TableModelFoto.getModel(), tbFotos.getTableHeader()));
101             tbFotos.getColumnModel().getColumn(2).setCellEditor(new javax.swing.DefaultCellEditor(lstCreditosTabelaFotos));
102 
103             /**
104              * ajusta colunas
105              */
106             Util.ajustaLargura(tbFotos, larguraColunasFotos);
107             tbFotos.repaint();
108 
109             /**
110              * liga o flag de alteração realiza
111              */
112             PainelWebFotos.alteracaoDetectada();
113 
114             /**
115              * armazena o último diretório lido
116              */
117             diretorioInicial = null;
118             diretorioInicial = new File(fileChooser.getSelectedFiles()[0].getParent());
119         }
120     }
121 }